#ifndef ARBOL_H_INCLUDED
#define ARBOL_H_INCLUDED
#include "dato.h"

typedef t_nodo_doble* t_arbol;


void crear_arbol(t_arbol *);
int altura(t_arbol *);
void trabajar_etiqueta(t_etiqueta *);
void recorrer_en_orden(t_arbol *,void(*func)(t_etiqueta*));
int comparar(t_etiqueta *, t_etiqueta *);
int insertar_en_arbol(t_arbol *,const t_etiqueta *, t_cmp);
t_arbol * mayor(const t_arbol *);
t_arbol * menor(const t_arbol *);
void eliminar_raiz(t_arbol *);
t_arbol* buscar_etiqueta(const t_arbol *,const t_etiqueta *, t_cmp );
int eliminar_etiqueta( t_arbol *, const t_etiqueta *, t_cmp );
int arbol_balanceado(t_arbol*);
int arbol_avl(t_arbol*);
void vaciar_arbol(t_arbol *);
int arbol_vacio(const t_arbol *);
int arbol_lleno(const t_arbol *);

#endif // ARBOL_H_INCLUDED
